/**
 * 防抖节流
 * 
 * 防抖
 * 在事件首次触发后，不会立即执行操作。而是在规定的期限后触发，假如在此过程中再次触发事件，则会重新进行计时。
 * 
 * 节流
 * 在事件首次触发后，在规定时限内不会触发（暂时失效），等过了规定时限，事件触发。
*/

// 防抖
const shake = (fn, dalay) => {
    let time = null;
    
    return function() {
        if(time) {
            clearTimeout(time);
            time = null;
        }
        time = setTimeout(fn, dalay);
    };
};

// 节流
const throttle = (fn, delay) => {
    let valid = true
    return function() {
       if(!valid){
           //休息时间 暂不接客
           return false 
       }
       // 工作时间，执行函数并且在间隔期内把状态位设为无效
        valid = false
        setTimeout(() => {
            fn()
            valid = true;
        }, delay)
    }
}


